from pydantic import BaseSettings


class Settings(BaseSettings):
    # the ip of agv
    AGV_IP: str = "192.168.1.184"

    # the port of agv
    AGV_PORT_STATUS: int = 19204
    AGV_PORT_CONTROL: int = 19205
    AGV_PORT_NAVIGATE: int = 19206
    AGV_PORT_CONFIG: int = 19207
    AGV_PORT_OTHER: int = 19210
    AGV_PORT_PUSH: int = 19301

    # the status of agv                       :int
    AGV_STATUS_INFO: int = 1000  # 查询机器人信息
    AGV_STATUS_RUN: int = 1002  # 机器人运行信息
    AGV_STATUS_LOC: int = 1004  # 机器人位置
    AGV_STATUS_SPEED: int = 1005  # 机器人速度
    AGV_STATUS_BLOCK: int = 1006  # 机器人的被阻挡状态
    AGV_STATUS_BATTERY: int = 1007  # 机器人电池状态
    AGV_STATUS_MOTOR: int = 1040  # 电机状态信息
    AGV_STATUS_LASER: int = 1009  # 激光点云数据
    AGV_STATUS_AREA: int = 1011  # 机器人当前所在区域
    AGV_STATUS_EMERGENCY: int = 1012  # 机器人急停状态
    AGV_STATUS_IO: int = 1013  # 查询机器人I/O状态
    AGV_STATUS_IMU: int = 1014  # 查询机器人IMU数据
    AGV_STATUS_RFID: int = 1015  # RFID数据
    AGV_STATUS_ULTRASONIC: int = 1016  # 超声传感器数据
    AGV_STATUS_PGV: int = 1017  # 二维码数据
    AGV_STATUS_ENCODER: int = 1018  # 编码器数据
    AGV_STATUS_TASK: int = 1020  # 机器人导航状态
    AGV_STATUS_TASK_STATUS_PACKAGE: int = 1110  # 机器人任务状态
    AGV_STATUS_RELOC: int = 1021  # 机器人定位状态
    AGV_STATUS_LOADMAP: int = 1022  # 地图载入状态
    AGV_STATUS_SLAM: int = 1025  # 机器人扫图状态
    AGV_STATUS_DISPATCH: int = 1030  # 机器人当前的调度状态
    AGV_STATUS_ALARM: int = 1050  # 机器人报警状态
    AGV_STATUS_CURRENT_LOCK: int = 1060  # 当前控制权所有者
    AGV_STATUS_MAP: int = 1300  # 机器人载入的地图以及存储的地图
    AGV_STATUS_STATION: int = 1301  # 查询机器人当前载入地图中的站点信息
    AGV_STATUS_STARTDMXSCRIPT: int = 1903  # 运行氛围灯脚本
    AGV_STATUS_STOPBATTERYSCRIPT: int = 1904  # 停止氛围灯脚本
    AGV_STATUS_ALL1: int = 1100  # 批量查询数据1
    AGV_STATUS_ALL2: int = 1101  # 批量查询数据2
    AGV_STATUS_ALL3: int = 1102  # 批量查询数据3

    # 从机器人上下载地图
    AGV_CONFIG_DOWN_LOAD_MAP: int = 4011

    # 机器人控制
    AGV_CONTROL_MOTION: int = 2010
    AGV_CONTROL_STOP: int = 2000

    class Config:
        env_file = ".env"


settings = Settings()
